package com.zhtools.tree;

import java.util.List;

/**
 * Created by zhanghao on 2017/7/4.
 * 树节点抽象
 */
public interface TreeNode<T extends TreeNode> {
    /**
     * 叶子节点编号
     *
     * @return
     */
    Long getId();

    /**
     * 父节点编号
     *
     * @return
     */
    Long getParentId();

    void setParentId(Long parentId);

    /**
     * 路径
     *
     * @return
     */
    String getPath();

    void setPath(String path);

    /**
     * 子节点集合
     *
     * @return
     */
    List<T> getChildren();

    /**
     * 设置子节点集合
     *
     * @param children
     */
    void setChildren(List<T> children);

    /**
     * 获取深度
     *
     * @return
     */
    Integer deep();

    /**
     * 深度+1
     */
    void nextDeep();
}
